﻿using BCCommon.Enums;
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace BCTMSRESTful.Configs
{
    /// <summary>
    /// 表示请求身份认证的类型。
    /// </summary>
    public class RequireAuthorizeAttribute : AuthorizeAttribute
    {
        /// <summary>
        /// 使用指定的值初始化 <see cref="RequireAuthorizeAttribute"/> 的实例。
        /// </summary>
        /// <param name="role">可接受的主要用户角色。</param>
        /// <param name="otherRoles">可接受的其他用户角色。</param>
        public RequireAuthorizeAttribute(RoleType role, params RoleType[] otherRoles)
        {
            List<string> roles = new List<string>
            {
                role.ToString()
            };
            roles.AddRange(otherRoles.Select(p => p.ToString()));

            base.Roles = string.Join(",", roles);
        }
    }
}
